package com.test.javafaq_kafka.vo;

//生产者

import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
@Slf4j
public class DemoProducer {
    //kafka提供了能够发送消息到kafka的组件对象
    //第一个类型是Topic的名称  字符串
    //第二个类型是json字符串  表示传递的消息
    @Resource
    KafkaTemplate<String,String> kafkaTemplate;
    //工具类  帮我们将java转化成json
    Gson gson = new Gson();

    //定时发送信息的方法
    //这个方法在项目启动后，自动按照指定时间计划运行
    @Scheduled(fixedRate = 5 * 1000)
    public void sendMessage(){
        DemoMessage msg = new DemoMessage()
                .setId(100)
                .setTime(System.currentTimeMillis())
                .setContent("我是一只来自南方的小鸟");
        //将对象转化为json
        String json = gson.toJson(msg);
        //发送消息
        log.debug("发送消息:{}",msg);
        kafkaTemplate.send("myTopic",json);
    }

}
